package mx.itesm.goyostacoadventure;

import android.util.Log;

import org.andengine.audio.music.Music;
import org.andengine.audio.music.MusicFactory;
import org.andengine.audio.sound.Sound;
import org.andengine.audio.sound.SoundFactory;

import java.io.IOException;

/**
 * Created by Luis on 5/6/2015.
 */
public class AdministradorSonidos {
    //Instancia unica
    private static final AdministradorSonidos INSTANCE = new AdministradorSonidos();

    public AdministradorRecursos admRecursos = AdministradorRecursos.getInstance();

    //Musica de pantallas
    private Music musica;
    private Music msPantallas;
    private Music msTienda;
    private Music msJuego;

    //Sonidos botones
    public Sound btnir;     //ir
    public Sound btnreg; //regresar

    //SONIDOS
    //Ladridos
    public Sound mbark1;
    public Sound mbark2;
    public Sound mbark3;
    //Cuando huyen los perros
    public Sound mcry1;
    public Sound mcry2;
    public Sound mcry3;
    //Cuando pierde vida
    public Sound morale;
    //Cuando vende un taco a un cliente
    public Sound msold;
    //Cuando arroja un chile
    public Sound mthrow;
    //PAra la bomba
    //public Sound mprebomb;
    //public Sound mbomb;

    //Regresar la instancia del administrador sonidos
    public static AdministradorSonidos getInstance() {return INSTANCE;}

    //CONTROL MUSICA
    // Pone la musicabase con el parametro que recibe
    public void setMusicaBase(TipoMusica nuevoTipo){
        switch (nuevoTipo){
            case MUSICA_PANTALLAS:
                musica = msPantallas;
                musica.setLooping(true);
                musica.setVolume(0.3f);
                musica.play();
                break;
            case MUSICA_TIENDA:
                musica = msTienda;
                musica.setLooping(true);
                musica.setVolume(0.3f);
                musica.play();
                break;
            case MUSICA_JUEGO:
                musica = msJuego;
                musica.setLooping(true);
                musica.setVolume(0.3f);
                musica.play();
                break;

        }
    }

    //Reproducir musica
    public void reproducirMusica(){
        if (musica!= null && !musica.isPlaying()){
            musica.play();
        }
    }
    //Pausar musica pantallas
    public void pausarMusica(){
        if (musica!= null && musica.isPlaying()) {
            musica.pause();
        }
    }
    //parar musica pantallas
    public void pararMusica(){
        musica.stop();
    }



    // MUSICA PANTALLAS
    //Cargar musica pantallas
    public void cargarMusicaPantallas(){
        try{
            msPantallas = MusicFactory.createMusicFromAsset(admRecursos.engine.getMusicManager(),admRecursos.actividadJuego,"music/Music pantallas.mp3");
        }
        catch (IOException e){
            Log.i("Cargar Musica pantallas","No se puede cargar la musica");
        }
    }

    //Liberar musica pantallas
    public void liberarMusicaPantallas(){
        msPantallas.release();
        msPantallas = null;
    }

    //MUSICA TIENDA
    //Cargar musica tienda
    public void cargarMusicaTienda(){
        try{
            msTienda = MusicFactory.createMusicFromAsset(admRecursos.engine.getMusicManager(),admRecursos.actividadJuego,"music/Music tienda.mp3");
        }
        catch (IOException e){
            Log.i("Cargar Musica tienda","No se puede cargar la musica");
        }
    }
    //Liberar musica tienda
    public void liberarMusicatienda(){
        msTienda.release();
        msTienda = null;
    }

    //MUSICA JUEGO
    //Cargar musica juego
    public void cargarMusicaJuego(){
        try{
            msJuego = MusicFactory.createMusicFromAsset(admRecursos.engine.getMusicManager(),admRecursos.actividadJuego,"music/Music juego.mp3");
        }
        catch (IOException e){
            Log.i("Cargar Musica juego","No se puede cargar la musica");
        }
    }
    //liberar musica juego
    public void liberarMusicaJuego(){
        msJuego.release();
        msJuego = null;
    }

    //Cargar sonidos juego
    public void cargarSonidosJuego(){
        try{
            mbark2 = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(), admRecursos.actividadJuego, "music/bark1.mp3");
            mbark3 = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/bark2.mp3");
            mbark1 = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/bark3.mp3");
            mcry2 = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/cry1.mp3");
            mcry3 = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/cry2.mp3");
            mcry1 = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/cry3.mp3");
            morale = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/orale.mp3");
            msold = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/sold.mp3");
            mthrow = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego,"music/throw.mp3");
        }
        catch (IOException e){
            Log.i("Cargar sonido juego","No se puede cargar los sonidos");
        }
    }

    public void liberarSonidosJuego(){
        mbark1.release();
        mbark1 = null;
        mbark2.release();
        mbark2 = null;
        mbark3.release();
        mbark3 = null;
        mcry1.release();
        mcry1 = null;
        mcry3.release();
        mcry2 = null;
        morale.release();
        morale = null;
        msold.release();
        msold = null;
        mthrow.release();
        mthrow = null;

    }

    //Para los botones
    public void cargarSonidosBtn(){
        try{
            btnir = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(), admRecursos.actividadJuego, "music/btn ir.mp3");
            btnreg = SoundFactory.createSoundFromAsset(admRecursos.engine.getSoundManager(),admRecursos.actividadJuego, "music/btn regreso.mp3");
        }
        catch (IOException e){
            Log.i("Cargar sonido juego","No se puede cargar los sonidos");
        }
        btnir.setVolume(2f);
        btnreg.setVolume(2f);
    }

}